home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / dev / obero / OberonAModules.lha / SysInfo.mod < prev    next >
Text File  |  1999-02-26  |  10KB  |  277 lines

  1. (*(*
  2. **      $VER: SysInfo.h 2.00 (20.10.96)
  3. **      SysInfo Release 2.00
  4. **
  5. **      SysInfo.library definitions
  6. **
  7. **      This file is public domain.
  8. **
  9. **      Author: Petri Nordlund <petrin@megabaud.fi>
  10. **
  11. **      $Id: SysInfo.h 1.5 1996/10/01 23:03:07 petrin Exp petrin $
  12. **
  13. **      Oberon-Interface by Thomas Igracki (T.Igracki@Jana.berlinet.de)
  14. **
  15. **      20.10.96: Updated for v2
  16. **
  17. **      Oberon-A 1.6 Interface by Morten Bjergstrøm (mbjergstroem@hotmail.com)
  18. **
  19. **      15.4.98
  20. *)*)
  21.  
  22. <*STANDARD-*>
  23. MODULE [2] SysInfo;
  24. (* $StackChk- $RangeChk- $CaseChk- $OvflChk- $ReturnChk- $TypeChk- $NilChk- *)
  25. IMPORT
  26.    y:=SYSTEM, e:=Exec, I:=Intuition, Sets, Kernel;
  27.  
  28. CONST
  29.   name  * = "SysInfo.library"; minversion * = 1; version * = 2;
  30.  
  31. TYPE
  32.   SysInfoPtr          * = POINTER [2] TO SysInfo;
  33.   LoadAveragePtr      * = POINTER [2] TO LoadAverage;
  34.   NotifyPtr           * = POINTER [2] TO Notify;
  35.   CpuUsagePtr         * = POINTER [2] TO CpuUsage;
  36.   TaskCpuUsagePtr     * = POINTER [2] TO TaskCpuUsage;
  37.  
  38. (*
  39.  * This structure is returned by InitSysInfo() and it's READ-ONLY.
  40.  *
  41.  * NOTE!! This structure will grow in the future, so don't make any assumptions
  42.  * about it's length.
  43.  *
  44.  *)
  45.  
  46.   SysInfo = RECORD 
  47. (* general *)
  48.      errNo -: LONGINT;        (* LONG: Used to hold error values   *)
  49.                               (*       from some functions         *)
  50. (* load average *)
  51.      loadAvgType  -: INTEGER; (* UWORD: load average type, see below       *)
  52.      loadAvgTime1 -: INTEGER; (* UWORD: Usually 1, 5 and 15 minutes.       *)
  53.      loadAvgTime2 -: INTEGER; (* UWORD: These times are in seconds.        *)
  54.      loadAvgTime3 -: INTEGER; (* UWORD: 0 = time not implemented           *)
  55.      fScale       -: INTEGER; (* UWORD: scale value, if lavgtype = FIXED   *)
  56.  
  57. (* id *)
  58.      pad1                : y.BYTE;  (* because BOOL = 2 Byte and BOOLEAN = 1 Byte! *)
  59.      getPpidImplemented -: BOOLEAN; (* BOOL: TRUE if GetPpid is implemented  *)
  60.      pad2                : y.BYTE;  (* because BOOL = 2 Byte and BOOLEAN = 1 Byte! *)
  61.      getPgrpImplemented -: BOOLEAN; (* BOOL: TRUE if GetPgrp is implemented  *)
  62.  
  63. (* get/setnice *)
  64.      whichImplemented -: SET;     (* UWORD: Search methods for Get/SetNice   *)
  65.      niceMin          -: INTEGER; (* WORD: Nice-value giving most cpu time   *)
  66.      niceMax          -: INTEGER; (* WORD: Nice-value giving least cpu time  *)
  67.  
  68. (* notify *)
  69.      pad3                  : y.BYTE;  (* because BOOL = 2 Byte and BOOLEAN = 1 Byte! *)
  70.      notifySigImplemented -: BOOLEAN; (* BOOL: Notify by signal implemented   *)
  71.      pad4                  : y.BYTE;  (* because BOOL = 2 Byte and BOOLEAN = 1 Byte! *)
  72.      notifyMsgImplemented -: BOOLEAN; (* BOOL: Notify by message implemented  *)
  73.  
  74. (* cpu usage *)
  75.      cpuUsageImplemented -: SET; (* UWORD: What cpu usage values are implemented *)
  76.  
  77. (* task cpu usage *)
  78.      taskCpuUsageImplemented -: SET; (* UWORD: What cpu usage values are implemented *)
  79.      reserved : ARRAY 8 OF LONGINT;  (* Reserved for future use *)
  80.   END;
  81.  
  82.  
  83. (*
  84.  * general
  85.  *
  86.  *)
  87.  
  88. CONST
  89. (* errno values *)
  90.   whichEPerm   * =  1;  (* Operation not permitted *)
  91.   whichESrch   * =  3;  (* No such process         *)
  92.   whichEAcces  * = 13;  (* Permission denied       *)
  93.   whichEInval  * = 22;  (* Invalid argument        *)
  94.  
  95.  
  96. (*
  97.  * load average
  98.  *
  99.  *)
  100.  
  101. (* Loadaverage type *)
  102.   loadAvgNone     * = 0;  (* load averages not implemented   *)
  103.   loadAvgFixedPnt * = 1;  (* load * SysInfo.fscale           *)
  104.  
  105. TYPE
  106. (* GetLoadAverage *)
  107.   LoadAverageFixed * = RECORD 
  108.      load1 -: LONGINT; (* ULONG: *)
  109.      load2 -: LONGINT; (* ULONG: *)
  110.      load3 -: LONGINT; (* ULONG: *)
  111.   END;
  112.  
  113. (* This is needed when calling GetLoadAverage() *)
  114.   LoadAverage * = RECORD
  115.      fixed - : LoadAverageFixed;
  116.      reserved: ARRAY 3 OF LONGINT; (* ULONG: Reserved for future use *)
  117.   END;
  118.  
  119. (*
  120.  * get/setnice
  121.  *
  122.  *)
  123.  
  124. CONST
  125. (* Possible search methods for Get/SetNice and are used in 'whichImplemented'-field *)
  126.   whichPrioProcess  * = 0;
  127.   whichPrioPgrp     * = 1;
  128.   whichPrioUser     * = 2;
  129.   whichPrioTask     * = 3;
  130.  
  131. (*
  132.  * notify
  133.  *
  134.  *)
  135.  
  136. TYPE
  137. (* This is needed when adding a notify-request. This may grow in future *)
  138.   Notify * = RECORD 
  139.      port   -: e.MsgPortPtr;       (* struct MsgPort*: message port for notify-messages  *)
  140.      signal -: INTEGER;            (* WORD: signal NUMBER if you use signals  *)
  141.      reserved: ARRAY 2 OF LONGINT; (* LONG[2]: Reserved for future use *)
  142.   END;
  143.  
  144. (* Flags for AddNotify () *)
  145. CONST
  146.   anUseMessages * = 0;
  147.  
  148. (*
  149.  * cpu usage
  150.  *
  151.  *)
  152. TYPE
  153. (* This is needed when querying cpu usage *)
  154.   CpuUsage * = RECORD 
  155.      totalUsedCpuTime      -: LONGINT; (* ULONG: Total used cputime in seconds      *)
  156.      totalElapsedTime      -: LONGINT; (* ULONG: Total used+idle cputime in seconds *)
  157.  
  158.      usedCpuTimeLastsec    -: LONGINT; (* ULONG: Used cputime during last second   *)
  159.      usedCpuTimeLastsecHz  -: LONGINT; (* ULONG: 100 * lastsec / lastsecHz = CPU % *)
  160.  
  161.      recentUsedCpuTime     -: LONGINT; (* ULONG: Recently used cputime             *)
  162.      recentUsedCpuTimeHz   -: LONGINT; (* ULONG: 100 * recent / hz = RECENT CPU %  *)
  163.      recentSeconds         -: INTEGER; (* UWORD: "recent" means this many seconds  *)
  164.  
  165.      involuntaryCSw        -: LONGINT; (* ULONG: Involuntary context switches *)
  166.      voluntaryCSw          -: LONGINT; (* ULONG: Voluntary context switches   *)
  167.      totalCSw              -: LONGINT; (* ULONG: Total # of context switches  *)
  168.  
  169.      involuntaryCSwLastsec -: LONGINT; (* ULONG: Involuntary csws during last second *)
  170.      voluntaryCSwLastsec   -: LONGINT; (* ULONG: Voluntary csws during last second   *)
  171.      totalCSwLastsec       -: LONGINT; (* ULONG: Total # of csws during last second  *)
  172.  
  173.      reserved : ARRAY 12 OF LONGINT; (* ULONG: Reserved for future use    *)
  174.   END;
  175.  
  176. CONST
  177. (* These bits are used in cpuUsageImplemented-field *)
  178.   cpuUsageTotalImplemented           * = 0;
  179.   cpuUsageLastsecImplemented         * = 1;
  180.   cpuUsageRecentImplemented          * = 2;
  181.   cpuUsageIvvoCSwImplemented         * = 3;
  182.   cpuUsageTotalCSwImplemented        * = 4;
  183.   cpuUsageIvvoCSwLastsecImplemented  * = 5;
  184.   cpuUsageTotalCSwLastsecImplemented * = 6;
  185.  
  186. (*
  187.  * task cpu usage
  188.  *
  189.  *)
  190.  
  191. TYPE
  192. (* This is needed when querying cpu usage of a task *)
  193.   TaskCpuUsage * = RECORD 
  194.      totalUsedCpuTime      -: LONGINT; (* ULONG: Total used cputime                 *)
  195.      totalUsedTimeHz       -: LONGINT; (* ULONG: usedCputime / hz = cputime in secs *)
  196.      totalElapsedTime      -: LONGINT; (* ULONG: Total used+idle cputime in seconds *)
  197.  
  198.      usedCpuTimeLastsec    -: LONGINT; (* ULONG: Used cputime during last second    *)
  199.      usedCpuTimeLastsecHz  -: LONGINT; (* ULONG: 100 * lastsec / lastsec_hz = CPU % *)
  200.  
  201.      recentUsedCpuTime     -: LONGINT; (* ULONG: Recently used cputime             *)
  202.      recentUsedCpuTimeHz   -: LONGINT; (* ULONG: 100 * recent / hz = RECENT CPU %  *)
  203.      recentSeconds         -: INTEGER; (* UWORD: "recent" means this many seconds  *)
  204.  
  205.      involuntaryCSw        -: LONGINT; (* ULONG: Involuntary context switches *)
  206.      voluntaryCSw          -: LONGINT; (* ULONG: Voluntary context switches   *)
  207.      totalCSw              -: LONGINT; (* ULONG: Total # of context switches  *)
  208.  
  209.      involuntaryCSwLastsec -: LONGINT; (* ULONG: Involuntary csws during last second *)
  210.      voluntaryCSwLastsec   -: LONGINT; (* ULONG: Voluntary csws during last second   *)
  211.      totalCSwLastsec       -: LONGINT; (* ULONG: Total # of csws during last second  *)
  212.  
  213.      reserved : ARRAY 8 OF LONGINT; (* ULONG: Reserved for future use    *)
  214.   END;
  215.  
  216. CONST
  217. (* These bits are used in cpu_usage_implemented-field *)
  218.   taskCpuUsageTotalImplemented           * = 0;
  219.   taskCpuUsageLastsecImplemented         * = 1;
  220.   taskCpuUsageRecentImplemented          * = 2;
  221.   taskCpuUsageIvvoCSwImplemented         * = 3;
  222.   taskCpuUsageTotalCSwImplemented        * = 4;
  223.   taskCpuUsageIvvoCSwLastsecImplemented  * = 5;
  224.   taskCpuUsageTotalCSwLastsecImplemented * = 6;
  225.  
  226. VAR
  227.   base - : e.LibraryPtr;
  228.  
  229. (* -----init----- *)
  230. PROCEDURE InitSysInfo     * {base, -30} (): SysInfoPtr;
  231. PROCEDURE FreeSysInfo     * {base, -36} (si{8}: SysInfoPtr);
  232.  
  233. (* -----load average----- *)
  234. PROCEDURE GetLoadAverage  * {base, -42} (